package com.pubinfo.passbook.common.entity;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.pubinfo.passbook.common.handler.*;
import com.pubinfo.passbook.common.model.bo.mdm.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *
 * </p>
 *
 * @TableName t_mdm_contract
 */
@Data
@NoArgsConstructor
@TableName(value = "t_mdm_contract", autoResultMap = true)
@EqualsAndHashCode(callSuper = false)
public class TMdmContract implements Serializable {
  
  private static final long serialVersionUID = 1L;
  
  private String msgid;
  
  /**
   * 承办单位OU
   */
  private String applyareaou;
  
  /**
   * 承办部门名称
   */
  private String applydept;
  
  /**
   * 承办部门OU
   */
  private String applydeptcode;
  
  /**
   * 承办人ehr人员编号
   */
  private String applyuserid;
  
  /**
   * 承办人ehr人员姓名
   */
  private String applyusername;
  
  /**
   * 归档日期
   */
  private String archivedate;
  
  /**
   * 合同归档人员账号
   */
  private String archiveuserid;
  
  /**
   * 变更时间
   */
  private String changedate;
  
  /**
   * 本单位审批领导ID
   */
  private String companyleader;
  
  /**
   * 本单位审批领导名称
   */
  private String companyleaderdesc;
  
  /**
   * 合同类型ID
   */
  private String concode3class;
  
  /**
   * 多主体合同编号
   */
  @TableId(value = "contractcode")
  private String contractcode;
  
  /**
   * 集团合同编号
   */
  private String contractcodeJt;
  
  /**
   * 合同概况
   */
  private String contractfactbook;
  
  /**
   * 合同ID
   */
  private String contractid;
  
  /**
   * 合同名称
   */
  private String contractname;
  
  /**
   * 合同属性
   */
  private String costtype;
  
  /**
   * 费用属性
   */
  private String costtype2;
  
  /**
   * 创建日期
   */
  private String creadate;
  private String createdate;
  
  /**
   * 币种
   */
  private String currencytype;
  
  /**
   * 合同紧急程度
   */
  private String emergencydegree;
  
  /**
   * 合同履行结束日期
   */
  private String enddate;
  
  /**
   * 顺延时间
   */
  private String extendedate;
  
  /**
   * 是否有顺延条款
   */
  private String extendedterms;
  
  /**
   * 顺延类型
   */
  private String extendedtype;
  
  @TableField(typeHandler = FileListTypeHandler.class)
  private List<FileList> filelist;
  
  /**
   * 编号日期
   */
  private String finaldate;
  
  @TableField(typeHandler = FileListTypeHandler.class)
  private List<FinanceList> financelist;
  
  /**
   * 框架适用地区
   */
  private String frameareas;
  
  /**
   * 签约类型
   */
  private String frameflag;
  
  /**
   * 框架属性
   */
  private String frametype;
  
  /**
   * 收付类型
   */
  private String fundflag;
  
  /**
   * 房屋地址
   */
  private String homeaddress;
  
  /**
   * ICT项目编号
   */
  private String ictprojectnum;
  
  /**
   * 年度框架协议或战略合作协议
   */
  private String ifframeagree;
  
  /**
   * 是否ICT项目
   */
  private String ifictproject;
  
  /**
   * 是否属于关键合同
   */
  private String ifkeyconract;
  
  /**
   * 是否维保
   */
  private String ifmaintenance;
  
  /**
   * 是否业务外包合同
   */
  private String ifoutsourccon;
  
  /**
   * 是否周期型合同
   */
  private String ifperiodic;
  
  /**
   * 是否涉及金额变更
   */
  private String iftradechange;
  
  /**
   * 是否送上级单位审批
   */
  private String ifupapproval;
  
  /**
   * 内控审批项目类别
   */
  private String internalappitems;
  
  private String jasmineBizstatus;
  
  private String jasmineObjectid;
  
  /**
   * 土地房屋合系统同ID
   */
  private String landhouseSrcId;
  
  /**
   * 租赁编号
   */
  private String landhousenum;
  
  /**
   * 最后更新时间
   */
  private String lastupdatetime;
  
  /**
   * 维保年限（年）
   */
  private String maintenyear;
  
  /**
   * 原合同ID
   */
  private String manuscriptid;
  
  /**
   * 是否多主体框架协议
   */
  private String multsubject;
  
  /**
   * 是否变更合同（新增、变更、解除 )
   */
  private String operatetype;
  
  @TableField(typeHandler = PartListTypeHandler.class)
  private List<PartList> partlist;
  
  /**
   * 我方名称
   */
  private String partaname;
  
  /**
   * 公司主体公司主体
   */
  private String partatype;
  
  /**
   * 签约依据备注
   */
  private String pbasecontext;
  
  @TableField(typeHandler = PerListTypeHandler.class)
  private List<PerList> perlist;
  
  /**
   * 周期型合同 每期金额
   */
  private String perieachamount;
  
  /**
   * 周期型合同频率
   */
  private String perifrequency;
  
  /**
   * 每平米年租金
   */
  private String permeterrent;
  
  /**
   * 签约依据
   */
  private String poweranalyzeflag;
  
  /**
   * 原合同正式编号
   */
  private String preContractcode;
  
  /**
   * 原合同名称
   */
  private String preContractname;
  
  /**
   * 原合同金额
   */
  private String preTradesum;
  
  @TableField(typeHandler = PurchaseListTypeHandler.class)
  private List<PurchaseList> purchaselist;
  
  /**
   * 是否续约提醒
   */
  private String renewcontractflag;
  
  /**
   * 租赁面积
   */
  private String rentalarea;
  
  /**
   * 租赁用途
   */
  private String rentalpurposes;
  
  /**
   * 调用时间
   */
  private String sendtime;
  
  @TableField(typeHandler = SideListTypeHandler.class)
  private List<SideList> sidelist;
  
  /**
   * 合同发起号
   */
  private String signcode;
  
  /**
   * 合同履行开始日期
   */
  private String signdate;
  
  /**
   * 签约日期
   */
  private String signenddate;
  
  /**
   * 合同签约人员账号
   */
  private String signenduserid;
  
  /**
   * 来源系统
   */
  private String sourceSystem;
  
  /**
   * 盖章日期
   */
  private String stampdate;
  
  /**
   * 合同盖章人员账号
   */
  private String stampuserid;
  
  /**
   * 合同状态
   */
  private String status;
  
  /**
   * 采购类型
   */
  private String stockmode;
  
  /**
   * 规范文本的子类
   */
  private String subusecontext;
  
  /**
   * 应税属性
   */
  private String taxableproperty;
  
  /**
   * 税额
   */
  private String taxamount;
  
  /**
   * 印花税计税品目
   */
  private String taxitem;
  
  /**
   * 联系电话
   */
  private String tel;
  
  /**
   * 合同金额（单位：元）
   */
  private String tradesum;
  
  /**
   * 差额
   */
  private String tradesumChange;
  
  /**
   * 修改时间
   */
  private String updatedate;
  
  /**
   * 合同范本类型
   */
  private String usecontext;
  
  /**
   * 添加时间
   */
  @TableField(fill = FieldFill.INSERT)
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private Date createTime;
  
}
